package org.ccay.security.authc;

import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Map;

import org.apache.shiro.authz.AuthorizationInfo;
import org.ccay.security.entity.Program;
import org.ccay.security.entity.Role;

/**
 * 
 * @author chaowangbang
 * @since 2017年2月5日
 */
public interface ProgramAuthorizationInfo extends AuthorizationInfo{
	
	/**
	 * 全部范围id
	 */
	static final long PROGRAM_ALL_ID = 0L;
	
	/**
	 * 全部范围Name
	 */
	static final String PROGRAM_ALL_NAME = "PROGRAM_ALL";
	
	/**
	 * 获得当前用户所拥有角色的所有id
	 * @return
	 */
	Collection<Long> getRoleIds();

	/**
	 * 获得当前用户所拥有角色对象
	 * @return
	 */
	Collection<Role> getObjectRoles();

	/**
	 * 获得当前用户所拥范围id
	 * @return
	 */
	Collection<Long> getProgramIds();

	/**
	 * 获得当前用的范围角色信息
	 * @return
	 */
	Map<Program, LinkedHashSet<Role>> getProgramRoles();
		
}
